#include "ThresholdFilter.h"
#include "FilterException.h"
#include <cv.h>

using namespace cv;

ThresholdFilter::ThresholdFilter(double limit):
	limit(limit){}

void ThresholdFilter::process(const Mat &src, Mat &dst){
	//chequeo que el tipo de matrices sea válido
	if (! (src.type() == CV_8UC1 || src.type() == CV_32FC1))
		throw FilterException("src debe ser de tipo CV_8UC1 o CV_32FC1");
	if (src.type() != dst.type() || src.size() != dst.size()){
		dst.release();
		dst.create(src.size(), CV_8UC1);
	}

	//calculo el maxValue dependiendo del tipo de matriz
	double maxValue = UCHAR_MAX;
	if (src.type() == CV_32FC1)
		maxValue = 1.0; // los colores float tienen el valor máximo 1.0

	threshold(src, dst, limit, maxValue, THRESH_BINARY );

}

